perm filename DD.DOC[DD,BGB] blob
sn#054433 filedate 1973-07-18 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 DDCALL and DDJOB - A Prototype of a Data Disc Display Spooler.
00004 00003 I. GRAPHICS.
00005 00004 SUMMARY OF DDCALL ROUTINES
00009 00005 SPECIFIC WINDOWS
00012 00006 THE GRAPHICS PRIMITIVES
00014 ENDMK
⊗;
DDCALL and DDJOB - A Prototype of a Data Disc Display Spooler.
Bruce g. Baumgart
ABSTRACT
DDJOB creates Data Disc buffers of graphics and TV pictures.
DDJOB is bit raster oriented and follows the clear white light of
windowing. Bit rasters provide a common ground on which images
and graphics can be combined. Windows provide a way to deal with
image addressing (physical and logical), zooming, scaling,
magnification, clipping, cropping, aspect ratios and buffer
allocation.
DDJOB waits for letters from DDCALL. The DDCALL routines
are not III compatible because I have never liked the III very much,
a program that reads III buffers and sends appropriate letters to
The require source file statement for declaring these ruotines is:
REQUIRE "DD[DD,BGB]" SOURCE_FILE;
At present the mechanisms in DDCALL will load a distinct DDJOB for
each project programmer as it becomes necessary. For programmer XXX,
the DDJOB is renamed to DDJXXX and is run thru PTY.
I. GRAPHICS.
BEGIN "TEST1"
REQUIRE "DD[DD,BGB]" SOURCE_FILE;
SETDWN(40,40,350,350);
SETLWN(0,0,1,1);
ERASDD;
AI(-1,-1);
AV( 1,-1);
AV( 1, 1);
AV(-1, 1);
AV(-1,-1);
AI(-0.5,0);AV(+0.5,0);
AI(0,-0.5);AV(0,+0.5);
AI(0,0);ARC(0.75, 6.3, 0);
SHOWDD(0);
DDSTR(0.25, 0.5, 0, "DISPLAY EXAMPLE !");
INCHRW;
END "TEST1"
The above program will display a cross within a circle within
a rectangle with a label on your local Data Disc Screen.
SUMMARY OF DDCALL ROUTINES
ERASTV; Erases the six video synthesizer channels.
ERASDD; Erases your local data disc screen.
DPYDD (STRING File; INTEGER ARRAY Swindo, Owindo, Levels);
DPYDD gets a TV file from the 2314 and repacks the bits by
levels and stores the TV image and the repacked image on the
Librascope in order to expedite subsequent DPYDD's. Swindo is an
integer array [1:4] containing the source window: sx,sy,sdx,sdy.
Owindo is an integer array [1:3] containing the object window:
ox,oy,magpow. (Windows are explained on page three).
The Levels array [1:6] contains channel numbers. hannel #0 is
a no operation. DPYDD always sets the logical window and the
physical destination window, so that a DPYDD followed by graphics
primitives results in a combined image properly clipped and scaled.
SETLWN(real lx,ly,ldx,ldy); Initializes the Graphics Logical Window.
SETDWN(integer dr,dc,dm,dn ); Initializes the Physical Destination Window.
SETWND(real array lwn;integer array dwn); Combines SETLWN and SETDWN.
The graphics primitives:(details given on page four)
AI(X,Y);AV(X,Y);DOT(X,Y);ARC(R,L,A);RADIAL(R1,R2,A);DMS(dddmmss);
DDSTR (x,y,chn,str); Data Disc string at x,y.
DDSTRC(r,c,chn,str); Data Disc string at row column.
DDTYPE(Y,GLITCHES,LINES);
SHOWDD(INTEGER levchn); Outputs a graphics image. Negative levchn
IOR's the image onto the DD, Positive levchn causes replacement.
Levchn itself should be a two digit octal number, Level concatenated
with Channel.
DRUMDD(frame);
Positive frame numbers cause the next dd buffers shown by
DPYDD or SHOWDD to go to the librascope. Negative frame numbers get
the frame from the librascope and display it. The zero frame flushes
the librascope (well you see there is this chain on the back of the
librascope). Ordinary mortals are limited to 150 frames, since the
librascope can only hold 300 frames in all. Drum frames are like
glass and even if The Ernest Television Crossbar Switch should happen
to work, we will still be up against the wall for tracks, so IORing
tracks thru Ernest is not a solution to the glass problem since the
number of tracks is so ridiculously small.
TVSEG(file,segname);
Gets a TV file from the 2314 or from the librascope, and
makes an upper segment out of it. Null string segnam flushs the file
off the librascope, null string file name flushs the segment.
SPECIFIC WINDOWS
TV file window frame - TVM & TVN forever 216 by 288.
TV images contain so many rows, TVM, and so many columns,
TVN, and consequently image manipulations must be restricted to these
bounds. The number of rows and columns is computed from the image
file header, unusually large or negative counts cause the file to be
ignored. At our present primitive state of cameras, digitization and
memory I have come to prefer images which contain 216 rows of 288
columns of sixbits per pixel, this standard arises from the
convenience of dimensions that are divisible by as many factors of
two and three as possible. All images are expanded or truncated to
fit into 216 rows by 288 columns by 6 bits.
Data Disc window frame - DDM & DDN forever 480 by 512.
The data disc can display 482 lines of 512 bits each, however
for the sake of divisibility by four DDM is only 480 lines.
Source Window - INTEGER SX,SY,SDX,SDY;
The source window defines a subset of a TV file.
Object Window - INTEGER OX,OY,MAGPOW.
The object window defines a mapping from a TV file onto the
data disc screen. OX,OY is where the center of the source window is
to be placed on the screen. MAGPOW is the logrithm base two of a
magnification factor, so each source image pixel gets mapped into
(2↑MAGPOW)↑2 object image pixels. No interpolation or smoothing is
done.
Logical Window - REAL LX,LY,LDX,LDY;
The logical window defines the address space for the graphics
primitives: DOT, AI, AV, ARC, RADIAL and DDSTR.
Data Disc Physical Window or Destination Window - INTEGER DR,DC,DM,DN.
The physical destination window defines the patch of data disc
screen in which the logical window appears.
THE GRAPHICS PRIMITIVES
AI(X,Y).................Position Pseudo Beam.
AV(X,Y).................Absolute Vector to new pseudo beam position.
DOT(X,Y)................Absolute point, doesn't affect beam position.
ARC(R,L,A);
ARC displays an arc of radius R centered about the most
recent beam position. L is the arc's directed length from a starting
point A radians from the positive X axis, L & A are in radians and
CCW is the positive orientation.
RADIAL (R1,R2,A);
RADIAL displays the line segment which radiates from the
pseudo beam position in the direction A, and lies between the radii
R1 and R2, the pseudo beam remains fixed unless R1=R2;
Real DMS (integer dddmmss)
DMS converts from degrees, minutes and seconds to radians.
The argument is a decimal integer ((ddd*100+mm)*100+ss.